# 定义类
# 定义师傅类:属性和方法
class master(object):
    def __init__(self):
        self.gongfu = "好运来"

    def make_cake(self):
        print(f'使用{self.gongfu}配方做蛋糕')


# 定义学校类:属性和方法
class School(object):
    def __init__(self):
        self.gongfu = '菲尔雪'

    def make_cake(self):
        print(f'使用{self.gongfu}配方做蛋糕')


# 定义徒弟类：继承师傅类和学校类,添加和父类同名的属性和方法
class prentice(School, master):
    def __init__(self):
        self.gongfu='独家技术'

    def make_cake(self):
        #加自己初始化的原因：如果不进行初始化的化，kongfu属性值输出的是上一个init内的kongfu属性值
        self.__init__()
        print(f'使用{self.gongfu}配方做蛋糕')

    #子类调用父类的同名属性和方法：把父类的同名属性再次封装
    def make_master(self):
        #父类属性名。函数（）
        #父类再次初始化的原因：这里想要调用父类的同名方法和属性，属性在init初始化位置，所以需要再次调用init
        master.__init__(self)
        master.make_cake(self)

    def make_School(self):
        School.__init__(self)
        School.make_cake(self)

#定义徒孙类
class Tusun(object):
    pass


# 创建徒孙对象
tusun = prentice()

# 调用徒弟属性和方法
#print(tudi.gongfu)
tusun.make_cake()

tusun.make_master()
tusun.make_School()

tusun.make_cake()

#结果：如果子类和父类有同名属性和方法，子类创建对象调用属性和方法的时候，调用的是子类的属性和方法
